package com.ljx.lambda.lambda01;

import java.util.function.Consumer;
import java.util.function.Function;

/**
 *  我们知道使用Lambda表达式的前提是需要有函数式接口。
 *  而Lambda使用时不关心接口名，抽象方法名，只关心抽象方法的参数列表和返回值类型。
 *  因此为了让我们使用Lambda方便，JDK提供了大量常用的函数式接口。
 *  ---无需自定义函数式接口。
 *  ---如果JDK不提供一些函数式接口，那么每个人需要自定义函数式接口，而且每个人定义的名称不一致。
 *  内置的函数式接口都在
 * java.util.function包下
 * @author LJX
 * @Description: TODO
 * @Date: 2022/11/3 15:20
 * @Version 1.0
 */
public class Test06 {
	public static void main(String[] args) {
		Function<String,Integer> function=(name)->{
			return name.length();
		};
		fun(function,"李吉星");
		fun(name->name.length(),"李吉祥");
	}
	public static void fun(Function<String,Integer> function,String name){
		/**
		 *这种函数式接口需要参数和有返回值。
		 * 方法有参数，有返回值。 当我们需要有参有返回值的函数式接口，就可以使用这种内置。
		 */
		Integer apply = function.apply(name);
		System.out.println(apply);

	}
}
